package com.example.cexceptios;

/**
 * 运行时异常(非受检异常)
 * 本类用于在运行时处理不符合预期的程序状态，继承自RuntimeException
 * 由于是RuntimeException的子类，因此这种异常是非受检的，即编译器不要求强制捕获或声明
 * 主要用途是在于处理那些在程序运行过程中可能发生的、但又不太严重的错误情况
 */
public class CheckException extends RuntimeException {
    /**
     * 自定义校验异常类，继承自Exception
     * 用于在校验业务逻辑时抛出特定的异常，可包含错误码和错误信息
     */
    private String errorCode; // 错误码，用于标识特定的错误类型

    /**
     * 默认构造函数
     */
    public CheckException() {
        super();
    }

    /**
     * 构造函数，包含错误信息
     *
     * @param message 错误信息
     */
    public CheckException(String message) {
        super(message);
    }

    /**
     * 构造函数，包含错误信息和原因
     *
     * @param message 错误信息
     * @param cause   异常原因
     */
    public CheckException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 构造函数，仅包含原因
     *
     * @param cause 异常原因
     */
    public CheckException(Throwable cause) {
        super(cause);
    }

    /**
     * 构造函数，包含错误码和错误信息
     *
     * @param errorCode 错误码
     * @param message   错误信息
     */
    public CheckException(String errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
    }

    /**
     * 构造函数，包含错误信息、原因以及是否启用压制和堆栈跟踪的选项
     *
     * @param message            错误信息
     * @param cause              异常原因
     * @param enableSuppression  是否启用压制
     * @param writableStackTrace 是否可写入堆栈跟踪
     */
    public CheckException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }

    /**
     * 构造函数，包含错误码、错误信息和原因
     *
     * @param errorCode 错误码
     * @param message   错误信息
     * @param cause     异常原因
     */
    public CheckException(String errorCode, String message, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
    }


}

